Django ফর্ম (Forms) তৈরি করতে এবং ব্যবহারকারীর ইনপুট যাচাই (Validation) করার জন্য একটি শক্তিশালী সিস্টেম প্রদান করে। ফর্ম ভ্যালিডেশন ব্যবহারকারীর প্রদত্ত ডেটার সঠিকতা এবং পূর্ণতা নিশ্চিত করতে সহায়তা করে। আপনি ডিফল্ট ভ্যালিডেশন ফিচার ব্যবহার করতে পারেন অথবা কাস্টম ভ্যালিডেশন তৈরি করে বিশেষ ধরনের যাচাই করতে পারেন।
Django Form Validation
১. ফর্ম ভ্যালিডেশন কী?
ফর্ম ভ্যালিডেশন হলো প্রক্রিয়া যা ব্যবহারকারীর ইনপুট যাচাই করে, যাতে নিশ্চিত হওয়া যায় যে ইনপুটগুলো সঠিক এবং ডেটাবেসে সেভ করার উপযুক্ত। Django ফর্মগুলোতে দুটি প্রধান ধরনের ভ্যালিডেশন রয়েছে:
- ডিফল্ট ভ্যালিডেশন: Django নিজেই ফিল্ডের প্রকার অনুযায়ী কিছু স্ট্যান্ডার্ড ভ্যালিডেশন সরবরাহ করে (যেমন, একটি ইমেইল ফিল্ডের জন্য সঠিক ইমেইল ফর্ম্যাট যাচাই করা)।
- কাস্টম ভ্যালিডেশন: আপনি নিজে একটি বিশেষ শর্তে ফর্ম ইনপুট যাচাই করতে পারেন।
২. Django ফর্মে ডিফল্ট ভ্যালিডেশন
Django ফর্মের মডেল ফিল্ডের জন্য ডিফল্ট ভ্যালিডেশন সাধারণত স্বয়ংক্রিয়ভাবে পরিচালিত হয়। উদাহরণস্বরূপ, CharField বা EmailField ফিল্ডের জন্য, Django নিজে একটি মিনিমাম দৈর্ঘ্য বা সঠিক ইমেইল ফরম্যাট চেক করে।
from django import forms
class UserForm(forms.Form):
username = forms.CharField(max_length=100)
email = forms.EmailField()
এই কোডের মধ্যে:
username: একটি সাধারণ টেক্সট ফিল্ড, যেখানে ১০০ অক্ষরের বেশি ইনপুট গ্রহণ করা যাবে না।email: ইমেইল ফিল্ড, যেটি নিশ্চিত করে যে ব্যবহারকারীর দেয়া ইনপুট একটি বৈধ ইমেইল ঠিকানা।
৩. ফর্মের is_valid() মেথড
যখন আপনি ফর্মে ডেটা প্রেরণ করেন, তখন is_valid() মেথডটি ব্যবহারকারীর ইনপুট যাচাই করে। যদি সমস্ত ইনপুট সঠিক থাকে, এটি True রিটার্ন করে, অন্যথায় False রিটার্ন করে।
form = UserForm(request.POST)
if form.is_valid():
# ডেটা সঠিক, এখানে প্রসেস করা যাবে
username = form.cleaned_data['username']
email = form.cleaned_data['email']
else:
# ডেটা ভুল, ত্রুটি দেখানো হবে
errors = form.errors
এখানে:
cleaned_data: যদি ফর্মটি বৈধ হয়, তাহলেcleaned_datadictionary দিয়ে ফর্মের সব ইনপুট পাওয়া যাবে।errors: যদি ফর্মটি অবৈধ হয়, ত则errorsproperty দিয়ে ইনপুটের ত্রুটি দেখতে পারবেন।
Custom Validation (কাস্টম ভ্যালিডেশন)
Django ফর্মের মাধ্যমে আপনি নিজের কাস্টম ভ্যালিডেশন ফাংশন তৈরি করতে পারেন যা আপনার নির্দিষ্ট ব্যবসায়িক লজিক অনুসারে ইনপুট যাচাই করবে। কাস্টম ভ্যালিডেশন করার জন্য আপনি clean_<field_name>() মেথড বা ফর্মের clean() মেথড ব্যবহার করতে পারেন।
১. ফিল্ড ভিত্তিক কাস্টম ভ্যালিডেশন
আপনি যদি একটি নির্দিষ্ট ফিল্ডের জন্য কাস্টম ভ্যালিডেশন করতে চান, তাহলে clean_<field_name>() মেথডটি ব্যবহার করবেন। এখানে <field_name> হলো আপনার ফিল্ডের নাম।
class UserForm(forms.Form):
username = forms.CharField(max_length=100)
email = forms.EmailField()
def clean_username(self):
username = self.cleaned_data.get('username')
if 'admin' in username:
raise forms.ValidationError("Username cannot contain 'admin'.")
return username
এখানে:
clean_username()মেথডটিusernameফিল্ডের জন্য কাস্টম ভ্যালিডেশন করে, এবং যদি ইউজারনেমে'admin'থাকে, তবে একটি ত্রুটি বার্তা রিটার্ন করবে।
২. ফর্ম ভিত্তিক কাস্টম ভ্যালিডেশন
কখনও কখনও আপনাকে পুরো ফর্মের উপর কাস্টম ভ্যালিডেশন করতে হতে পারে, যেমন দুটি ফিল্ডের মধ্যে সম্পর্ক চেক করা। এই জন্য clean() মেথড ব্যবহার করা হয়।
class UserForm(forms.Form):
username = forms.CharField(max_length=100)
email = forms.EmailField()
def clean(self):
cleaned_data = super().clean()
username = cleaned_data.get('username')
email = cleaned_data.get('email')
if username and email:
if username.lower() == email.lower():
raise forms.ValidationError("Username and email cannot be the same.")
return cleaned_data
এখানে:
clean()মেথডে, আমরা ফর্মের সব ইনপুট যাচাই করে নিশ্চিত করেছি যেusernameএবংemailএকসাথে সমান না হয়।
৩. ফর্মের ত্রুটি প্রদর্শন
কাস্টম ভ্যালিডেশন যদি ত্রুটি উত্পন্ন করে, তবে আপনি তা ফর্মের ত্রুটি হিসেবে প্রদর্শন করতে পারেন। উদাহরণস্বরূপ:
form = UserForm(request.POST)
if form.is_valid():
# ফর্ম প্রক্রিয়া করুন
else:
# ত্রুটি দেখান
for field, errors in form.errors.items():
for error in errors:
print(f"Error in {field}: {error}")
Conclusion (সারাংশ)
Django তে ফর্ম ভ্যালিডেশন একটি গুরুত্বপূর্ণ ফিচার যা ডেটা সঠিকতা নিশ্চিত করে। Django স্বয়ংক্রিয়ভাবে অনেক সাধারণ ভ্যালিডেশন প্রদান করে, তবে কাস্টম ভ্যালিডেশন ব্যবহার করে আপনি বিশেষ প্রয়োজনীয়তা অনুসারে ইনপুট যাচাই করতে পারেন। Django ফর্মের clean() এবং clean_<field_name>() মেথডগুলো কাস্টম লজিক প্রয়োগের জন্য ব্যবহার করা হয়, যা আপনাকে আরও নিয়ন্ত্রিত এবং উন্নত ফর্ম ভ্যালিডেশন তৈরি করতে সক্ষম করে।
Read more